#!/bin/bash

# 检查参数数量
if [ "$#" -lt 3 ]; then
    echo "Usage: $0 <program> <sleep_seconds> <input_to_program...>"
    exit 1
fi

PROGRAM=$1
SLEEP_SECONDS=$2
shift 2

# 将剩余的参数转换为输入
INPUT=$*

# 使用 valgrind 分析内存使用情况
valgrind --tool=massif --massif-out-file=massif.out $PROGRAM <<< "$INPUT"
ms_print massif.out > memory_report.txt
echo "Memory usage report saved to memory_report.txt"

# 使用 perf 工具分析 CPU 和缓存使用情况
perf stat -e cache-misses,cache-references,instructions,cycles -o perf_report.txt -- $PROGRAM <<< "$INPUT"
echo "Perf report saved to perf_report.txt"

# 睡眠指定的秒数
sleep $SLEEP_SECONDS

# 再次运行程序并将输入送入标准输入
echo $INPUT | $PROGRAM

echo "Analysis complete."
